/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.camachosanchez.reportes;

import com.camachosanchez.bean.Neumaticos;
import com.camachosanchez.util.ReportUtil;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import java.awt.Desktop;
import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import javax.swing.JOptionPane;

/**
 *
 * @author Zully
 */
public class ImprimirNeumatico {
    
    public void generarReporte(Neumaticos neumatico) {
        Document document = new Document(PageSize.A4, 0, 0, 50, 50);
        try {
            SimpleDateFormat formatoDeFecha = new SimpleDateFormat("yyyy-MM-dd");
            
            PdfWriter.getInstance(document, new FileOutputStream("reportes/neumatico_" + neumatico.getCodigo() + ".pdf"));
            document.open();
            document.addTitle("Neumático: " + neumatico.getCodigo());
            
            float[] anchoColsT = {1.1f, 0.6f};//version prueba
            PdfPTable tablaTitulo=new PdfPTable(anchoColsT);
            tablaTitulo.setSpacingAfter(20f);
            tablaTitulo.setHorizontalAlignment(Element.ALIGN_CENTER);
            tablaTitulo.setWidthPercentage(90);

            PdfPCell celda =new PdfPCell (new Paragraph("Neumático " + neumatico.getCodigo(),
            FontFactory.getFont(BaseFont.HELVETICA,18,Font.BOLD,BaseColor.BLACK)));
            celda.setHorizontalAlignment(Element.ALIGN_CENTER);
            celda.setBorderWidth(0);
            tablaTitulo.addCell(celda);

            tablaTitulo.addCell(ReportUtil.getCelda("TireSoft 2.0 (Versión de prueba)",1,1,BaseColor.WHITE,0,0,10,1));//version prueba
            document.add(tablaTitulo);
            
            float[] anchoColsN = {2f, 2f, 2f, 2f, 2f, 2f};
            PdfPTable tablaN=new PdfPTable(anchoColsN);
            tablaN.setWidthPercentage(90);
            tablaN.addCell(ReportUtil.getCelda("Información Principal",6,1,new BaseColor(217,227,255),0,0.5f,10,1));
            tablaN.addCell(ReportUtil.getCelda("Código:",1,1,new BaseColor(255,255,255),0,0.5f,9,1));
            tablaN.addCell(ReportUtil.getCelda(neumatico.getCodigo(),2,1,new BaseColor(255,255,255),0,0.5f,9,0));
            tablaN.addCell(ReportUtil.getCelda("Número de serie:",1,1,new BaseColor(255,255,255),0,0.5f,9,1));
            tablaN.addCell(ReportUtil.getCelda(neumatico.getNumSerie(),2,1,new BaseColor(255,255,255),0,0.5f,9,0));
            tablaN.addCell(ReportUtil.getCelda("Número de factura:",1,1,new BaseColor(255,255,255),0,0.5f,9,1));
            tablaN.addCell(ReportUtil.getCelda(neumatico.getNumFactura(),2,1,new BaseColor(255,255,255),0,0.5f,9,0));
            tablaN.addCell(ReportUtil.getCelda("Código de barras:",1,1,new BaseColor(255,255,255),0,0.5f,9,1));
            tablaN.addCell(ReportUtil.getCelda(neumatico.getCodBarras(),2,1,new BaseColor(255,255,255),0,0.5f,9,0));
            tablaN.addCell(ReportUtil.getCelda("Fecha de registro:",1,1,new BaseColor(255,255,255),0,0.5f,9,1));
            tablaN.addCell(ReportUtil.getCelda(formatoDeFecha.format(neumatico.getFechaRegistro()),2,1,new BaseColor(255,255,255),0,0.5f,9,0));
            tablaN.addCell(ReportUtil.getCelda("Estado:",1,1,new BaseColor(255,255,255),0,0.5f,9,1));
            tablaN.addCell(ReportUtil.getCelda(neumatico.getIdEstado().getNombre(),2,1,new BaseColor(255,255,255),0,0.5f,9,0));
            
            String valor;
            tablaN.addCell(ReportUtil.getCelda(" ",6,1,new BaseColor(255,255,255),0,0.5f,10,1));
            tablaN.addCell(ReportUtil.getCelda("Información Técnica",3,1,new BaseColor(217,227,255),0,0.5f,10,1));
            tablaN.addCell(ReportUtil.getCelda("Información de Almacenamiento",3,1,new BaseColor(217,227,255),0,0.5f,10,1));
            tablaN.addCell(ReportUtil.getCelda("Marca:",1,1,new BaseColor(255,255,255),0,0.5f,9,1));
            valor = (neumatico.getIdMarca()==null)? "" : neumatico.getIdMarca().getNombre();
            tablaN.addCell(ReportUtil.getCelda(valor,2,1,new BaseColor(255,255,255),0,0.5f,9,0));
            tablaN.addCell(ReportUtil.getCelda("Almacén:",1,1,new BaseColor(255,255,255),0,0.5f,9,1));
            tablaN.addCell(ReportUtil.getCelda(neumatico.getIdAlmacen().getNombre(),2,1,new BaseColor(255,255,255),0,0.5f,9,0));
            tablaN.addCell(ReportUtil.getCelda("Tipo de piso:",1,1,new BaseColor(255,255,255),0,0.5f,9,1));
            tablaN.addCell(ReportUtil.getCelda(neumatico.getTipoPiso().getNombre(),2,1,new BaseColor(255,255,255),0,0.5f,9,0));
            tablaN.addCell(ReportUtil.getCelda("Dirección:",1,1,new BaseColor(255,255,255),0,0.5f,9,1));
            tablaN.addCell(ReportUtil.getCelda(neumatico.getIdAlmacen().getDireccion(),2,1,new BaseColor(255,255,255),0,0.5f,9,0));
            tablaN.addCell(ReportUtil.getCelda("Tipo de banda:",1,1,new BaseColor(255,255,255),0,0.5f,9,1));
            tablaN.addCell(ReportUtil.getCelda(neumatico.getIdModelo().getMedida(),2,1,new BaseColor(255,255,255),0,0.5f,9,0));
            tablaN.addCell(ReportUtil.getCelda("Fecha de compra:",1,1,new BaseColor(255,255,255),0,0.5f,9,1));
            tablaN.addCell(ReportUtil.getCelda(formatoDeFecha.format(neumatico.getFechaCompra()),2,1,new BaseColor(255,255,255),0,0.5f,9,0));
            
            tablaN.addCell(ReportUtil.getCelda(" ",6,1,new BaseColor(255,255,255),0,0.5f,10,1));
            tablaN.addCell(ReportUtil.getCelda("Información Inicial",6,1,new BaseColor(217,227,255),0,0.5f,10,1));
            tablaN.addCell(ReportUtil.getCelda("Profundidad (mm):",1,1,new BaseColor(255,255,255),0,0.5f,9,1));
            tablaN.addCell(ReportUtil.getCelda(neumatico.getProfunidad() + "",1,1,new BaseColor(255,255,255),0,0.5f,9,0));
            tablaN.addCell(ReportUtil.getCelda("Renovaciones:",1,1,new BaseColor(255,255,255),0,0.5f,9,1));
            tablaN.addCell(ReportUtil.getCelda(neumatico.getNumRenovaciones() + "",1,1,new BaseColor(255,255,255),0,0.5f,9,0));
            tablaN.addCell(ReportUtil.getCelda("Recorrido (km):",1,1,new BaseColor(255,255,255),0,0.5f,9,1));
            tablaN.addCell(ReportUtil.getCelda(neumatico.getDistanciaRecorrida() + "",1,1,new BaseColor(255,255,255),0,0.5f,9,0));
            tablaN.addCell(ReportUtil.getCelda("Número de capas:",1,1,new BaseColor(255,255,255),0,0.5f,9,1));
            tablaN.addCell(ReportUtil.getCelda(neumatico.getNumCapas() + "",1,1,new BaseColor(255,255,255),0,0.5f,9,0));
            tablaN.addCell(ReportUtil.getCelda("Profundidad mínima:",1,1,new BaseColor(255,255,255),0,0.5f,9,1));
            tablaN.addCell(ReportUtil.getCelda(neumatico.getProfundidadMinima() + "",1,1,new BaseColor(255,255,255),0,0.5f,9,0));
            tablaN.addCell(ReportUtil.getCelda("Presión mínima(lb):",1,1,new BaseColor(255,255,255),0,0.5f,9,1));
            tablaN.addCell(ReportUtil.getCelda(neumatico.getPresionMinima() + "",1,1,new BaseColor(255,255,255),0,0.5f,9,0));
            
            tablaN.addCell(ReportUtil.getCelda("Distribuidor, Costos y Garantía",6,1,new BaseColor(217,227,255),0,0.5f,10,1));
            tablaN.addCell(ReportUtil.getCelda("Distribuidor:",1,1,new BaseColor(255,255,255),0,0.5f,9,1));
            valor = (neumatico.getIdDistribuidor()==null)? "" : neumatico.getIdDistribuidor().getNombre();
            tablaN.addCell(ReportUtil.getCelda(valor,3,1,new BaseColor(255,255,255),0,0.5f,9,0));
            tablaN.addCell(ReportUtil.getCelda("Precio:",1,1,new BaseColor(255,255,255),0,0.5f,9,1));
            tablaN.addCell(ReportUtil.getCelda(neumatico.getPrecio() + "",1,1,new BaseColor(255,255,255),0,0.5f,9,0));
            tablaN.addCell(ReportUtil.getCelda("Forma de pago:",1,1,new BaseColor(255,255,255),0,0.5f,9,1));
            tablaN.addCell(ReportUtil.getCelda(neumatico.getIdFormaPago().getNombre(),1,1,new BaseColor(255,255,255),0,0.5f,9,0));
            tablaN.addCell(ReportUtil.getCelda("Garantía (días):",1,1,new BaseColor(255,255,255),0,0.5f,9,1));
            tablaN.addCell(ReportUtil.getCelda(neumatico.getGarantiaDias() + "",1,1,new BaseColor(255,255,255),0,0.5f,9,0));
            tablaN.addCell(ReportUtil.getCelda("Garantía (km):",1,1,new BaseColor(255,255,255),0,0.5f,9,1));
            tablaN.addCell(ReportUtil.getCelda(neumatico.getGarantiaKilometros() + "",1,1,new BaseColor(255,255,255),0,0.5f,9,0));
            
            tablaN.addCell(ReportUtil.getCelda("Comentarios",6,1,new BaseColor(217,227,255),0,0.5f,10,1));
            valor = (neumatico.getComentario()==null)? "" : neumatico.getComentario();
            tablaN.addCell(ReportUtil.getCelda(valor+" ",6,1,new BaseColor(255,255,255),0,0.5f,9,0));
            
            document.add(tablaN);
            
            document.close();
            
            File pdfFile = new File("reportes/neumatico_" + neumatico.getCodigo() + ".pdf");
            if (Desktop.isDesktopSupported()) {
                Desktop.getDesktop().open(pdfFile);
            } else {
                JOptionPane.showMessageDialog(null, "No se puede obtener la vista previa.", "Error al abrir el archivo", JOptionPane.ERROR_MESSAGE);
            }
        } catch (Exception ex) {
            System.err.println(ex.getMessage());
        }
    }
    
}
